package com.xique.park.service.biz.service;

import com.xique.common.core.web.domain.AjaxResult;
import com.xique.park.bean.domain.ParkOn;
import com.xique.park.bean.request.comm.EditParkOnRequest;
import com.xique.park.bean.request.comm.MarkOutParkOnRequest;
import com.xique.park.bean.request.comm.ParkOnEditPlateSaveRequest;
import com.xique.park.bean.request.comm.ParkOnListRequest;
import com.xique.park.bean.request.web.parkOn.BatchMarkOutParkOnRequest;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 在场记录相关方法service
 *
 * @author xique
 */
public interface IParkOnBizService {

    /**
     * 查询在场记录列表
     *
     * @param request 在场记录请求对象
     * @return 在场记录列表
     */
    AjaxResult getParkOnLst(ParkOnListRequest request);

    /**
     * 修改车牌号信息回显
     *
     * @param request 在场记录修改车牌信息请求request
     * @return 修改结果
     */
    AjaxResult getParkOnEditPlateInfo(EditParkOnRequest request);

    /**
     * 编辑车牌保存
     *
     * @param request 在场记录编辑车牌信息保存request
     * @return 编辑车牌保存结果
     */
    AjaxResult editPlateInfo(ParkOnEditPlateSaveRequest request);

    /**
     * 标记出场
     *
     * @param request 在场记录标记出场请求request
     * @return 标记出场结果
     */
    AjaxResult markOut(MarkOutParkOnRequest request);

    /**
     * 批量标记出场
     *
     * @param request 在场记录批量标记出场请求request
     * @return 批量标记出场结果
     */
    AjaxResult batchMarkOut(BatchMarkOutParkOnRequest request);

    /**
     * 查询车位信息
     *
     * @return 车位信息
     */
    AjaxResult getSpacesInfo();

    /**
     * 查询多个车牌的在场记录
     *
     * @param parkId   车场ID
     * @param plateArr 车牌列表
     * @return 车牌的在场记录
     */
    AjaxResult getOnStatus(Long parkId, List<String> plateArr);

    /**
     * 查看在场记录详情
     *
     * @param request EditParkOnRequest
     * @return 在场记录详情
     */
    AjaxResult detail(EditParkOnRequest request);

    /**
     * 在场记录导入
     *
     * @param parkId        车场ID
     * @param parkOnList    在场车辆列表
     * @param updateSupport 是否更新
     * @return 导入结果
     */
    AjaxResult importData(Long parkId, List<ParkOn> parkOnList, boolean updateSupport);

    /**
     * 在场记录导出
     *
     * @param response  response
     * @param list      在场车辆列表
     * @param sheetName sheetName
     * @throws IOException IOException
     */
    void export(HttpServletResponse response, List<ParkOn> list, String sheetName) throws IOException;

    /**
     * 定时删除在场记录
     */
    void timingDelete();
}
